home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / swtools / mipsABI / examples / sup / PORT / step04 / supfilesrv.c.diff < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.9 KB  |  81 lines

  1. *** ../step3/supfilesrv.c    Thu Dec 16 13:36:45 1993
  2. --- supfilesrv.c    Thu Dec 16 15:00:32 1993
  3. ***************
  4. *** 341,348 ****
  5. --- 341,354 ----
  6.   int argc;
  7.   char **argv;
  8.   {
  9. + #ifdef _ABI_SOURCE
  10. +     register int x,pid;
  11. +     sigset_t signalmask, oldsignalmask;
  12. +     struct sigaction chldvec,ignvec,oldvec;
  13. + #else
  14.       register int x,pid,signalmask;
  15.       struct sigvec chldvec,ignvec,oldvec;
  16. + #endif
  17.       int chldsig ();
  18.       long tloc;
  19.   
  20. ***************
  21. *** 371,376 ****
  22. --- 377,394 ----
  23.           (void) serviceend ();
  24.           exit (0);
  25.       }
  26. + #ifdef _ABI_SOURCE
  27. +     ignvec.sa_handler = SIG_IGN;
  28. +     sigemptyset (&(ignvec.sa_mask));
  29. +     ignvec.sa_flags = 0;
  30. +     (void) sigaction (SIGHUP,&ignvec,&oldvec);
  31. +     (void) sigaction (SIGINT,&ignvec,&oldvec);
  32. +     (void) sigaction (SIGPIPE,&ignvec,&oldvec);
  33. +     chldvec.sa_handler = chldsig;
  34. +     sigemptyset (&(chldvec.sa_mask));
  35. +     chldvec.sa_flags = 0;
  36. +     (void) sigaction (SIGCHLD,&chldvec,&oldvec);
  37. + #else
  38.       ignvec.sv_handler = SIG_IGN;
  39.       ignvec.sv_onstack = 0;
  40.       ignvec.sv_mask = 0;
  41. ***************
  42. *** 381,386 ****
  43. --- 399,405 ----
  44.       chldvec.sv_mask = 0;
  45.       chldvec.sv_onstack = 0;
  46.       (void) sigvec (SIGCHLD,&chldvec,&oldvec);
  47. + #endif
  48.       nchildren = 0;
  49.       for (;;) {
  50.           x = service ();
  51. ***************
  52. *** 389,395 ****
  53. --- 408,420 ----
  54.               (void) servicekill ();
  55.               continue;
  56.           }
  57. + #ifdef _ABI_SOURCE
  58. +         sigemptyset (&signalmask);
  59. +         sigaddset (&signalmask, SIGCHLD);
  60. +         (void) sigprocmask (SIG_BLOCK, &signalmask, &oldsignalmask);
  61. + #else
  62.           signalmask = sigblock(sigmask(SIGCHLD));
  63. + #endif
  64.           if ((pid = fork()) == 0) { /* server process */
  65.               (void) serviceprep ();
  66.               answer ();
  67. ***************
  68. *** 398,404 ****
  69. --- 423,433 ----
  70.           }
  71.           (void) servicekill ();    /* parent */
  72.           if (pid > 0) nchildren++;
  73. + #ifdef _ABI_SOURCE
  74. +         (void) sigprocmask (SIG_SETMASK, &oldsignalmask, NULL);
  75. + #else
  76.           (void) sigsetmask(signalmask);
  77. + #endif
  78.       }
  79.   }
  80.   
  81.